home *** CD-ROM | disk | FTP | other *** search
/ Linux Cubed Series 7: Sunsite / Linux Cubed Series 7 - Sunsite Vol 1.iso / system / admin / linuxcon.000 / linuxcon / linuxconf-1.6 / misc / uname.c < prev    next >
C/C++ Source or Header  |  1996-04-03  |  1KB  |  62 lines

  1. #include <stdio.h>
  2. #include <stdlib.h>
  3. #include <string.h>
  4. #include <sys/utsname.h>
  5.  
  6. /*
  7.     Probe the running kernel for its version and release
  8. */
  9. int kernel_version (int v[3])
  10. {
  11.     struct utsname u;
  12.     int ret = uname (&u);
  13.     v[0] = v[1] = v[2] = 0;
  14.     if (ret != -1){
  15.         v[0] = atoi(u.release);
  16.         char *pt = strchr(u.release,'.');
  17.         if (pt != NULL){
  18.             pt++;
  19.             v[1] = atoi(pt);
  20.             pt = strchr(pt,'.');
  21.             if (pt != NULL){
  22.                 v[2] = atoi(pt+1);
  23.             }
  24.         }
  25.     }
  26.     return ret;
  27. }
  28.  
  29. /*
  30.     Return != 0 if the running kernel is newer than v0.v1.v2
  31. */
  32. int kernel_newer (int v0, int v1, int v2)
  33. {
  34.     int ret = 0;
  35.     int v[3];
  36.     if (kernel_version(v)!=-1){
  37.         ret = v0*1000000+v1*1000+v2 < v[0]*1000000 + v[1]*1000 + v[2];
  38.     }
  39.     return ret;
  40. }
  41.  
  42.  
  43. #ifdef TEST
  44.  
  45. #include <stdio.h>
  46.  
  47. int main (int, char *[])
  48. {
  49.     int v[3];
  50.     if (kernel_version (v)!=-1){
  51.         printf ("kernel_version %d %d %d\n",v[0],v[1],v[2]);
  52.         printf ("kernel is newer than 1.3.66 -> %d\n",kernel_newer(1,3,66));
  53.     }else{
  54.         printf ("kernel_version fail\n");
  55.     }
  56.     return 0;
  57. }
  58.  
  59.  
  60. #endif
  61.  
  62.